• MGLSource is an abstract base class for map content sources. A map content source supplies content to be shown on the map. A source is added to an MGLStyle object along with an MGLForegroundStyleLayer object. The foreground style layer defines the appearance of any content supplied by the source.

    Each source defined by the style JSON file is represented at runtime by an MGLSource object that you can use to refine the map’s content. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:] and -[MGLStyle sourceWithIdentifier:].

    Create instances of MGLShapeSource, MGLImageSource and the concrete subclasses of MGLTileSource (MGLVectorSource and MGLRasterSource) in order to use MGLSource‘s properties and methods. Do not create instances of MGLSource directly, and do not create your own subclasses of this class.

    See more

    Declaration

    Objective-C

    
    @interface MGLSource : NSObject

    Swift

    class MGLSource : NSObject
  • MGLShapeSource is a map content source that supplies vector shapes to be shown on the map. The shapes may be instances of MGLShape or MGLFeature, or they may be defined by local or external GeoJSON code. A shape source is added to an MGLStyle object along with an MGLVectorStyleLayer object. The vector style layer defines the appearance of any content supplied by the shape source. You can update a shape source by setting its shape or URL property.

    Each geojson source defined by the style JSON file is represented at runtime by an MGLShapeSource object that you can use to refine the map’s content and initialize new style layers. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:] and -[MGLStyle sourceWithIdentifier:].

    Any vector style layer initialized with a shape source should have a nil value in its sourceLayerIdentifier property.

    Example

    var coordinates: [CLLocationCoordinate2D] = [
        CLLocationCoordinate2D(latitude: 37.77, longitude: -122.42),
        CLLocationCoordinate2D(latitude: 38.91, longitude: -77.04),
    ]
    let polyline = MGLPolylineFeature(coordinates: &coordinates, count: UInt(coordinates.count))
    let source = MGLShapeSource(identifier: "lines", features: [polyline], options: nil)
    mapView.style?.addSource(source)
    
    See more

    Declaration

    Objective-C

    
    @interface MGLShapeSource : MGLSource

    Swift

    class MGLShapeSource : MGLSource
  • MGLRasterSource is a map content source that supplies raster image tiles to be shown on the map. The location of and metadata about the tiles are defined either by an option dictionary or by an external file that conforms to the TileJSON specification. A raster source is added to an MGLStyle object along with one or more MGLRasterStyleLayer objects. Use a raster style layer to control the appearance of content supplied by the raster source.

    Each raster source defined by the style JSON file is represented at runtime by an MGLRasterSource object that you can use to initialize new style layers. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:] and -[MGLStyle sourceWithIdentifier:].

    Example

    let source = MGLRasterSource(identifier: "clouds", tileURLTemplates: ["https://example.com/raster-tiles/{z}/{x}/{y}.png"], options: [
        .minimumZoomLevel: 9,
        .maximumZoomLevel: 16,
        .tileSize: 512,
        .attributionInfos: [
            MGLAttributionInfo(title: NSAttributedString(string: "© Mapbox"), url: URL(string: "http://mapbox.com"))
        ]
    ])
    mapView.style?.addSource(source)
    
    See more

    Declaration

    Objective-C

    
    @interface MGLRasterSource : MGLTileSource

    Swift

    class MGLRasterSource : MGLTileSource
  • MGLVectorSource is a map content source that supplies tiled vector data in Mapbox Vector Tile format to be shown on the map. The location of and metadata about the tiles are defined either by an option dictionary or by an external file that conforms to the TileJSON specification. A vector source is added to an MGLStyle object along with one or more MGLVectorStyleLayer objects. A vector style layer defines the appearance of any content supplied by the vector source.

    Each vector source defined by the style JSON file is represented at runtime by an MGLVectorSource object that you can use to initialize new style layers. You can also add and remove sources dynamically using methods such as -[MGLStyle addSource:] and -[MGLStyle sourceWithIdentifier:].

    Within each vector tile, each geometric coordinate must lie between −1 × extent and (extent × 2) − 1, inclusive. Any vector style layer initialized with a vector source must have a non-nil value in its sourceLayerIdentifier property.

    Commonly used vector sources include Mapbox Streets, Mapbox Terrain, and Mapbox Traffic.

    Example

    let source = MGLVectorSource(identifier: "pois", tileURLTemplates: ["https://example.com/vector-tiles/{z}/{x}/{y}.mvt"], options: [
        .minimumZoomLevel: 9,
        .maximumZoomLevel: 16,
        .attributionInfos: [
            MGLAttributionInfo(title: NSAttributedString(string: "© Mapbox"), url: URL(string: "http://mapbox.com"))
        ]
    ])
    mapView.style?.addSource(source)
    
    See more

    Declaration

    Objective-C

    
    @interface MGLVectorSource : MGLTileSource

    Swift

    class MGLVectorSource : MGLTileSource